﻿
namespace Service
{
    using Data.Repository;
    using System.Linq;
	using System.Collections.Generic;

    public class CategoryService : ICategoryService
    {
        private ICategoryRepository _categoryRepository;

        #region ICategoryService Members

        /// <summary>
        /// create new Category entity
        /// </summary>
        /// <param name="theNewCategory">the new Category instance</param>
        /// <returns>the new Category's ID</returns>
        public int CreateNewCategory(Data.Entity.Category theNewCategory)
        {
            if (theNewCategory == null)
            {
                return 0;
            }

            if (_categoryRepository == null)
            {
                _categoryRepository = new CategoryRepository();
            }

            return _categoryRepository.CreateNewCategory(theNewCategory);
        }

        public int DeleteCategory(int id)
        {
            if (id <= 0)
            {
                return 0;
            }

            if (_categoryRepository == null)
            {
                _categoryRepository = new CategoryRepository();
            }

            return _categoryRepository.DeleteCategory(id);
        }

		public IList<Data.Entity.Category> GetCategoryByLanguage(int languageID)
        {
			if(languageID <= 0)
			{
				return null;
			}

            if (_categoryRepository == null)
            {
                _categoryRepository = new CategoryRepository();
            }

            return _categoryRepository.GetCategoryByLanguage(languageID);
        }

        public int UpdateCategory(Data.Entity.Category theCategory)
        {
            if (theCategory == null || theCategory.CategoryID <= 0)
            {
                return 0;
            }

            if (_categoryRepository == null)
            {
                _categoryRepository = new CategoryRepository();
            }

            return _categoryRepository.UpdateCategory(theCategory);
        }

		public IList<Data.Entity.Category> GetSubCategories(int parentCategoryID)
		{
			if(parentCategoryID <= 0)
			{
				return null;
			}

			if(_categoryRepository == null)
			{
				_categoryRepository = new CategoryRepository();
			}

			return _categoryRepository.GetSubCategories(parentCategoryID);
		}

		public Data.Entity.Category GetCategoryByID(int id)
		{
			if(id <= 0)
			{
				return null;
			}

			if(_categoryRepository == null)
			{
				_categoryRepository = new CategoryRepository();
			}

			return _categoryRepository.GetTheCategory(id);
		}

		//public IList<Data.Entity.Category> GetAllCategoryByLanguage(int languageID)
		//{
		//    if(languageID <= 0)
		//    {
		//        return null;
		//    }

		//    if(_categoryRepository == null)
		//    {
		//        _categoryRepository = new CategoryRepository();
		//    }

		//    return _categoryRepository.GetAllCategoryByLanguage(languageID);
		//}

		#endregion
	}
}
